#include <stdio.h>
#include "single_linked_list.cpp"

// 增序链表A B的交集并存放于A
void GetIntersection(LinkedList &A, LinkedList B) {
    LNode *ptr = A; // 新链的工作节点
    LNode *pA = A->next, *pB = B->next; // A B 链的工作节点
    A->next = NULL; // 断链
    while (pA && pB)  
    {
        if (pA->data == pB->data) {
            LNode *r = pA;
            pA = pA->next;
            pB = pB->next;
            r->next = NULL;
            ptr->next = r;
            ptr = ptr->next;
        } else if (pA->data < pB->data) {
            pA = pA->next;
        } else {
            pB = pB->next;
        }

    }
    
}

int main() {
    LinkedList L1;
    InitList(L1);

    LinkedList L2;
    InitList(L2);

    // 插入
    ListAppend(L1, 0);
    ListAppend(L1, 3);
    ListAppend(L1, 7);
    ListAppend(L1, 10);
    PrintList(L1);

    ListAppend(L2, 1);
    ListAppend(L2, 2);
    ListAppend(L2, 5);
    ListAppend(L2, 10);
    PrintList(L2);

    GetIntersection(L1, L2);
    PrintList(L1);
    return 0;
}